package com.kingstar.ceres.data.helper;

import com.kingstar.ceres.data.bo.BaseFileMapping;
import com.kingstar.ceres.data.handler.ITaskLockHandler;
import com.kingstar.ceres.data.util.FormatUtils;
import lombok.extern.slf4j.Slf4j;

import java.nio.file.Files;
import java.nio.file.Path;

@Slf4j
public abstract class AbstractFileImportHelper implements IFileImportHelper{

    protected ITaskLockHandler taskLockHandler;

    @Override
    public void process(BaseFileMapping entity, String opDate, String execType) {
        //1.判断任务状态
        if (!taskLockHandler.checkTaskStatusAndTransToDoing(opDate,entity.getFileType(),
                entity.getFileId(),execType)){
            log.info("任务正在执行中,或已完成:{},{}",entity,opDate);
            return;
        }
        //2.判断文件是否存在 -- 不存在则快速失败
        Path path = FormatUtils.checkFilePath(entity.getLocalPath(), entity.getFileName());
        if (path==null || !Files.exists(path)){
            String errMsg="no such file";
            log.error("no such file:{}",path);
            taskLockHandler.fastFail(entity.getFileType(),entity.getFileId(),opDate,errMsg);
            return;
        }
        //3.更新任务路径
        entity.setFileName(path.getFileName().toString());
        //4.下发任务
        doProcess(entity,opDate);
    }
}